package org.fast.easy.system.upms.business.impl;

import lombok.RequiredArgsConstructor;
import org.fast.easy.core.domain.messages.MessagePublishDomain;
import org.fast.easy.system.core.business.IDictBusiness;
import org.fast.easy.system.notice.domain.bo.SysNoticeBo;
import org.fast.easy.system.notice.service.ISysNoticeService;
import org.fast.easy.system.upms.business.ISysNoticeBusiness;
import org.springframework.stereotype.Component;

/**
 * 类说明
 *
 * @author YanMing
 * @date 2024/5/17
 */
@Component
@RequiredArgsConstructor
public class SysNoticeBusinessImpl implements ISysNoticeBusiness {
    private final ISysNoticeService noticeService;
    private final IDictBusiness dictBusiness;
    /**
     * 添加系统通知并返回消息发布域对象。
     *
     * @param notice 系统通知对象，包含通知内容和类型等信息。
     * @return 返回消息发布域对象，如果通知添加成功，则消息对象包含通知类型和标题；如果添加失败，则返回null。
     */
    @Override
    public MessagePublishDomain add(SysNoticeBo notice) {
        MessagePublishDomain message = null;
        // 将通知信息插入数据库，并返回影响的行数
        int rows = noticeService.insertNotice(notice);
        // 如果插入成功（影响行数大于0），则根据通知类型获取对应的标签，并创建消息发布域对象
        if (rows > 0) {
            String type = dictBusiness.getDictLabel("sys_notice_type", notice.getNoticeType());
            message = new MessagePublishDomain(type, notice.getNoticeTitle());
        }
        return message;
    }
}
